package com.xinzhitong.www.service;

import com.xinzhitong.www.exception.QuestionBankException;
import com.xinzhitong.www.exception.TestException;
import com.xinzhitong.www.pojo.TestInfo;

import java.util.List;
import java.util.Map;

/**
 * 测试服务类
 *
 * @author 徐鑫 魏洛淳 钟伟良
 */
public interface TestService {

    /**
     * 获取指定证书下的随机一套测试
     *
     * @param credentialId 证书id
     * @return 测试基本信息
     * @throws TestException 测试异常
     */
    TestInfo getTestInfo(Integer credentialId) throws TestException;

    /**
     * 获取指定测试下的题目块
     *
     * @param testId 测试id
     * @return 题目块
     */
    List<Map<String, Object>> getQuestionBlocksOfTest(Integer testId);

    /**
     * 获取测试中某题的id
     *
     * @param username     用户名
     * @param questionType 题目类型
     * @param index        索引
     * @return 题号
     */
    Integer getQuestionIdOfTest(String username, String questionType, Integer index);

    /**
     * 测试批阅
     *
     * @param questions 题目们
     * @return 测试结果
     * @throws QuestionBankException 题库异常
     */
    Map<String, Object> readTest(Map<String, List<Map<String, Object>>> questions) throws QuestionBankException;

    /**
     * 获取测试题面
     *
     * @param index        索引
     * @param questionType 题目类型
     * @return 测试题面
     * @throws TestException 测试异常
     */
    Map<String, Object> getTestQuestion(Integer index, String questionType) throws TestException;

}
